


对不可变数组进行操作 （等号，copy，mutableCopy）
/**
 temp = 0x60000022f980     p      = 0x60000001e660
 arr1 = 0x60000022f980     arr1_p = 0x60000001e660    arr1_p.name = testArrayI0    arr1_class = __NSArrayI
 arr2 = 0x60000022f980     arr2_p = 0x60000001e660    arr2_p.name = testArrayI0    arr2_class = __NSArrayI
 arr3 = 0x600000440a80     arr3_p = 0x60000001e660    arr3_p.name = testArrayI0    arr3_class = __NSArrayM
 结论：
 对不可变数组进行操作时
 等号和copy：对数组浅拷贝，对元素浅拷贝，真实类型：不可变
 mutableCopy：对数组深拷贝，对元素浅拷贝，真实类型：可变
 */

对可变数组进行操作（等号，copy，mutableCopy）
/**
 temp = 0x604000445a90     p      = 0x60400000bf00
 arr1 = 0x604000445a90     arr1_p = 0x60400000bf00    arr1_p.name = testArrayM0    arr1_class = __NSArrayM
 arr2 = 0x60400023b5a0     arr2_p = 0x60400000bf00    arr2_p.name = testArrayM0    arr2_class = __NSArrayI
 arr3 = 0x604000445cd0     arr3_p = 0x60400000bf00    arr3_p.name = testArrayM0    arr3_class = __NSArrayM
 对不可变数组进行操作
 等号赋值：对数组浅拷贝，对元素浅拷贝，真实类型：可变
 copy： 对数组深拷贝，对元素浅拷贝，真实类型：不可变
 mutableCopy：对数组深拷贝，对元素浅拷贝，真实类型：可变数组
 */



综上可得：无论对数组进行何种操作，对数组中的元素确是没有任何用影响。
好处：节省了内存空间
缺点：若是不注意修改了其中元素的某些属性的值，你可以发挥下想象，在用到该元素值的其他地方会发生什么事情？


解决办法：
目前流行的是两种方式
第一种：归档解档
第二种：遵守NSCopying协议，并实现copyWithZone:，重新创建对象，将属性逐一进行copy赋值




